// 对于axios进行二次封装
import axios from 'axios'

//引入store
import store from '@/store'

//引入进度条 及 样式
import nProgress from 'nprogress'
import 'nprogress/nprogress.css'

// 1:利用axios对象的方法 create,创建一个axios实例
const requests = axios.create({
    // 配置对象
    // 基础路径
    baseURL: '/api',
    // 请求时间超时为5s
    timeout: 5000
})

// 请求拦截器
requests.interceptors.request.use((config) => {
    // config:配置对象（包含一个很重要的属性-----headers）
    if (store.state.detail.uuid_token) {
        //给请求头带入UUID
        config.headers.userTempId = store.state.detail.uuid_token
    }
    //携带token
    if (store.state.user.token) {
        config.headers.token = store.state.user.token
    }
    //进度条开始
    nProgress.start()
    return config
})

// 响应拦截器
requests.interceptors.response.use(
    (res) => {
        //进度条结束
        nProgress.done()
        return res.data
    },
    (error) => {
        //响应失败的回调函数
        return Promise.reject(new Error('响应拦截器位置---响应失败'))
    }
)

export default requests
